package Negocio;

import java.io.BufferedInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import Formularios.Progress;
import Objetos.Paquetes;

public class negPaquete extends Thread{
	
	public void run(){
		migrarPaquetes ();
	}
	private void migrarPaquetes (){
		try{
			File miDir = new File ("");
		    String fileAero = miDir.getAbsoluteFile() + "Paquetes.txt";		     
			ArrayList<Paquetes> lPaq = leerPaquetes(fileAero);
			int cant = lPaq.size();
			Boolean bool = false; 
			
			Progress form = new Progress(cant);
			form.setVisible(true);
			form.pack();		
			int cont = 1;
			for(Paquetes p : lPaq ){				
				if(! p.verificar(p.getIdPaquete())){			
					p.insertarPaquete(p);
					bool = true;					
					form.actualizar(cont ++);
				}else{
					form.actualizar(cont ++);
					JOptionPane.showMessageDialog(null,"El paquete "+ p.getIdPaquete() +" con destino a  "+ p.getCiudadDestino() +" ya esta migrado. !!!!!!!!!!!");				
				}
			}
			if(bool)JOptionPane.showMessageDialog(null,"Los paquetes fueron migrados !!!!!!!!!");
			
		}catch(Exception e){
			System.out.print("error");
		}
	}
	
	
	public void escribePaquete(String file, String ciudadOrigen, String ciudadDestino, String AeroOrigen, String AeroDestino, String Avion, int localidades, int locDisponibles, String  fDesde, String fHasta, int precio )throws IOException, ClassNotFoundException{
		try{	
			  ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
			  Paquetes paq = new Paquetes(1, ciudadOrigen,  ciudadDestino,  AeroOrigen,  AeroDestino,  Avion,  localidades,  locDisponibles,  fDesde,  fHasta, precio);
			  
			  oos.writeObject(paq);	    	    
			 
	          oos.close(); 
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		
		public void agregaPaquete(String file, String ciudadOrigen, String ciudadDestino, String AeroOrigen, String AeroDestino, String Avion, int localidades, int locDisponibles, String fDesde, String fHasta, int precio){		
	    try{
	    		int id = ObtenerUltimoId(file) + 1;
	            MiObjectOutputStream oos = new MiObjectOutputStream(new FileOutputStream(file,true));
	            
	            Paquetes paq = new Paquetes(id, ciudadOrigen,  ciudadDestino,  AeroOrigen,  AeroDestino,  Avion,  localidades,  locDisponibles,  fDesde,  fHasta, precio);
	               
	            oos.writeUnshared(paq);
	            
	            oos.close();
	        } catch (Exception e)
	        {
	            e.printStackTrace();
	        }

	    }
	public  ArrayList<Paquetes> leerPaquetes(String file)throws IOException, ClassNotFoundException { 
			ArrayList<Paquetes> paq = new ArrayList<Paquetes>();
		try{   
	        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));	        
	        Object aux = ois.readObject();	        
	        while (aux!=null)
	        {
			    paq.add((Paquetes)aux);
			    aux = ois.readObject();
	        }
	        ois.close();
	        System.out.println(paq.size());
	        return paq;                  
	    }
	    catch (EOFException e1)
	    {
	       return paq;        
	    }    	
	}

	private int ObtenerUltimoId(String file)throws IOException, ClassNotFoundException{		
		ObjectInputStream ois = null;
		int count = 0;
		try{
			ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));			
			Object aux = ois.readObject();        
	        while (aux!=null)
	        {
	        	count ++;
			    aux = ois.readObject();
	        }			
	    ois.close();
		return count;
		}catch(EOFException e){		
			return(count);	
		}		
	}
	
}
